;;; common-settings.el --- Some confiure in zuojg's Emacs
;; -*- Emacs-Lisp -*-

;; Time-stamp: <2010-04-15 00:46:44 Thursday by Mugua>

;; This  file is free  software; you  can redistribute  it and/or
;; modify it under the terms of the GNU General Public License as
;; published by  the Free Software Foundation;  either version 3,
;; or (at your option) any later version.

;; This file is  distributed in the hope that  it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR  A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You  should have  received a  copy of  the GNU  General Public
;; License along with  GNU Emacs; see the file  COPYING.  If not,
;; write  to  the Free  Software  Foundation,  Inc., 51  Franklin
;; Street, Fifth Floor, Boston, MA 02110-1301, USA.


;;; Commentary:
;;
;; Edit by zuojg

;;; Code:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Emacs的一些通用设置
;; Edit by zuojg
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 个人信息
;; Edit by zuojg
(setq user-mail-address "zuojg@126.com")
(setq user-full-name    "Jianguang ZUO")

(display-time-mode 1) ;;显示时间
(setq display-time-24hr-format t) ;;设置24小时制
(setq appt-issue-message t)    ;打开约会提醒功能
(set-frame-parameter nil 'alpha 0.9) ;设置透明

;; (menu-bar-mode 1) ;;显示菜单栏
(menu-bar-mode -1) ;;显示菜单栏

;;打开时跳回到上次的地方
(require 'saveplace)
(setq save-place-file "~/.emacs.d/.emacs-places")

;; (require 'unicad)           ;; 设置自动识别文件编码
;; (require 'zjl-c-hl-aggressive) ;; 增强代码阅读功能
;; (setq-default save-place t)

;; 在标题栏显示登陆名称和文件名
(setq frame-title-format
      '((:eval
           (let ((login-name (getenv-internal "LOGNAME")))
           (if login-name (concat login-name "@") "")))
        ;; (:eval (system-name))
        "zujg@126.com"
        "☆"
        (:eval (or (buffer-file-name) (buffer-name)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置session，避免session 与org-mode 冲突而无法退
;; 出Emacs
(require 'my-session)
(add-hook 'after-init-hook 'session-initialize)
(add-to-list 'session-globals-exclude
             'org-mark-ring)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置.emacs 的默认位置
(defun visit-.emacs ()
  "访问.emacs文件"
  (interactive)
  (find-file (concat usb-home-dir ".emacs")))
(global-set-key (kbd "C-x E") 'visit-.emacs)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置Edit-setting，添加部分功能
;;
;; 拷贝当前单词
(defun copy-word (&optional arg)
"Copy words at point into kill-ring"
 (interactive "P")
 (let ((beg (progn (if (looking-back "[a-zA-Z0-9]" 1) (backward-word 1)) (point)))
  (end (progn (forward-word arg) (point))))
   (copy-region-as-kill beg end)))

 ;; 拷贝当前行
(defun copy-line (&optional arg)
"Save current line into Kill-Ring without mark the line "
 (interactive "P")
 (let ((beg (line-beginning-position))
  (end (line-end-position arg)))
   (copy-region-as-kill beg end)))

;; 拷贝当前段
(defun copy-paragraph (&optional arg)
"Copy paragraphes at point"
 (interactive "P")
 (let ((beg (progn (backward-paragraph 1) (point)))
  (end (progn (forward-paragraph arg) (point))))
   (copy-region-as-kill beg end)))

;; 拷贝字符串
(defun copy-string (&optional arg)
 "Copy a sequence of string into kill-ring"
  (interactive)
  (setq onPoint (point))
  (let (
   ( beg    (progn (re-search-backward "[\t ]" (line-beginning-position) 3 1)
          (if (looking-at "[\t ]") (+ (point) 1) (point) ) )
    )
         ( end  (progn  (goto-char onPoint) (re-search-forward "[\t ]" (line-end-position) 3 1)
          (if (looking-back "[\t ]") (- (point) 1) (point) ) )
     ))
  (copy-region-as-kill beg end)
)
)

(define-key-list
 global-map
 `(
   ;; Edit by zuojg
   ("C-c W" copy-word)
   ("C-c L" copy-line)
   ("C-c P" copy-paragraph)
   ("C-c S" copy-string)
   ("C-k" kill-line)  ;;删除到行尾
   ))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置部分全局快捷键
(define-key-list
 global-map
 `(("M-r"     query-replace)
   ("ESC M-%" query-replace-regexp)
   ("ESC M-r" query-replace-regexp)
   ("C-x M-r" query-replace-regexp)
   ("M-z"     zap-to-char)
   ("C-x C-s" save-buffer)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 设置w3m的快捷键
(global-set-key (kbd "<f9> w") 'w3m)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置部分svn-settings快捷键
(define-key-list
 svn-status-mode-map
  `(
    ("r"       svn-status-revert)
    ("d"       svn-status-rm)
    ("C-k"     svn-delete-files)
    ("C-c M-r" svn-status-resolved)
    )
 )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 重新设置折叠代码的快捷键
(global-set-key (kbd "C-x M-h") 'hide-region-hide)
(global-set-key (kbd "C-x M-d") 'hide-region-unhide)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 设置天气预报的城市为杭州
(setq cn-weather-city "杭州")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 设置twitter 的默认账号
(setq eagle-twitter-username "zuojg"
      eagle-show-user-images t
      eagle-save-twitter-password t)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C-z 已用作elscreen的快捷键前导符，因此把C-z C-z改成
;; Edit-setting里的Undo快捷键
(eal-define-keys-commonly
 global-map
 `(
   ,(if window-system '("C-x C-z" undo))
))


(provide 'common-settings)
